1
Processi con Stato e Ottimizzazione delle Chiamate di Coda
AI019Lesson 7
00:00

In Elixir, i processi sono di durata breve per impostazione predefinita; una volta terminata una funzione, il processo si interrompe. Per creare un processo persistente con stato, utilizziamo la ricorsione per mantenere vivo il processo in un ciclo.

1. Ottimizzazione delle Chiamate di Coda (TCO)

Se l'azione finale assoluta di una funzione è quella di chiamarsi da sola, la VM Erlang (BEAM) esegue Ottimizzazione delle Chiamate di Coda. Invece di aggiungere un nuovo frame allo stack, semplicemente salta indietro all'inizio della funzione con nuovi argomenti.

def fattoriale(n, acc), do: _fatt(n-1, acc*n) # TCO
def fattoriale(n), do: n * fattoriale(n-1) # NON TCO
logica di saluto()chiamata a saluto()TCO: Riutilizzo del Frame dello Stack

2. Stato Persistente

Lo stato viene mantenuto passando valori aggiornati come argomenti alla chiamata ricorsiva. Grazie alla TCO, questi argomenti sostituiscono i parametri originali nello stack senza consumare memoria aggiuntiva, permettendo ai cicli di continuare indefinitamente.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>